extends Node2D
# ===========================================
# 主场景控制脚本 - 管理游戏全局功能
# ===========================================

# 暂停菜单场景资源
var pause_menu = preload("res://scene/pause_menu.tscn")
var menu_instance = null  # 暂停菜单实例引用
var auto_save_timer: Timer  # 自动保存计时器

# ===========================================
# 初始化函数 - 游戏开始时调用
# ===========================================
func _ready() -> void:
	set_process_input(true)
	# ===========================================
	# 自动保存系统设置
	# ===========================================
	auto_save_timer = Timer.new()
	add_child(auto_save_timer)
	auto_save_timer.wait_time = 30.0  # 30秒间隔
	auto_save_timer.one_shot = false  # 循环触发
	auto_save_timer.timeout.connect(_on_auto_save_timeout)  # 连接超时信号
	auto_save_timer.start()  # 启动计时器

# ===========================================
# 输入处理函数 - 监听暂停键
# ===========================================
func _input(event: InputEvent) -> void:
	if event.is_action_pressed("pause"):
		if menu_instance == null:
			get_tree().paused = true  # 暂停游戏
			menu_instance = pause_menu.instantiate()
			menu_instance.menu_closed.connect(_on_menu_closed)
			# 将暂停菜单作为CanvasLayer添加，确保全屏显示
			var canvas_layer = CanvasLayer.new()
			canvas_layer.add_child(menu_instance)
			add_child(canvas_layer)
			# 保存canvas_layer引用以便后续清理
			menu_instance.set_meta("canvas_layer", canvas_layer)
		else:
			print("Menu already exists")

# ===========================================
# 暂停菜单关闭回调函数
# ===========================================
func _on_menu_closed() -> void:
	if menu_instance != null:
		# 获取并清理CanvasLayer
		var canvas_layer = menu_instance.get_meta("canvas_layer")
		if canvas_layer:
			canvas_layer.queue_free()
		else:
			menu_instance.queue_free()
		menu_instance = null
		get_tree().paused = false  # 恢复游戏

# ===========================================
# 自动保存超时回调函数
# ===========================================
func _on_auto_save_timeout():
	# 调用全局存档函数保存游戏状态
	Global.save_game()
	print("自动保存游戏进度")
